//***************************************************************** //* NTHU General Physics Laboratory * //* 109.04.17 * //* Code by Tendy Yeh a4100791ex@gmail.com * //* * //* RLC expriment with Snapino, visit * //* http://www.phys.nthu.edu.tw/~gplab/ for more infomation * //***************************************************************** #include //匯入Timer程式庫 Timer timer; //命名Timer物件 #define L 270 //資料點數 long timestamp[L]; //宣告L個時間標籤變數(x軸) int Signal[L]; //宣告L個訊號變數(y軸) int i; //for迴圈變數 void setup() { Serial.begin(2000000); //開啟序列埠通訊 pinMode(10, OUTPUT); //設定D10為輸出腳位 timer.oscillate(10, 20, HIGH); //設定方波參數,輸出為D10腳、每20毫秒改變狀態、起始為HIGH } //(使D10產生週期40ms的方波) void loop() { for (i = 0; i < L; i++) { timestamp[i] = micros(); //紀錄時間,單位為微秒 Signal[i] = analogRead(A0); //偵測訊號電壓值,0~5V 對應到 0~1023; timer.update(); //依設定週期改變D10腳位狀態 // delayMicroseconds(50); //延遲50微秒,時間越短取樣解析度越高,但偵測時間會跟著變短 } //重複L次 for (i = 0; i < L; i++) { Serial.print(timestamp[i] * 0.000001, 6); //將時間單位轉換為s並輸出,精度至小數點後六位 Serial.print("\t"); //資料換列 Serial.println(Signal[i]* 0.0048876); //將訊號單位轉換為V並輸出 } //重複L次 while (1); //完成後停止執行,按RESET或重新執行序列埠監控視窗後重新偵測 }